package com.localking.algorithm.leetcode.array.string

/**
 * Write a function that reverses a string. The input string is given as an array of characters char[].
 * Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
 * You may assume all the characters consist of printable ascii characters.
 *
 * Example 1:
 * Input: ['h', 'e', 'l', 'l', 'o']
 * Output: ['o', 'l', 'l', 'e', 'h']
 *
 * Example 2:
 * Input: ['H', 'a', 'n', 'n', 'a', 'h']
 * Output: ['h', 'a', 'n', 'n', 'a', 'H']
 *
 * @author jinbo
 */
object ReverseString {
  def main(args: Array[String]): Unit = {
    val charArray: Array[Char] = Array('H', 'a', 'n', 'n', 'a', 'h')
    reverseString(charArray)
    println(charArray.mkString)
  }

  def reverseString(charArray: Array[Char]): Unit = {
    if(charArray != null && charArray.nonEmpty) {
      var start = 0
      var end = charArray.length - 1
      var temp: Char = 0
      while (start < end) {
        temp = charArray(end)
        charArray(end) = charArray(start)
        charArray(start) = temp
        start += 1
        end -= 1
      }
    }
  }
}
